﻿@using DatabaseLibrary;
@* Quitar esta sección si se utilizan agrupaciones *@
@section Scripts {
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
    <script src="~/Scripts/jquery.timepicker.js"></script>

    <script type="text/javascript">
        $(document).ready(function () {
            $('#fecha_inicio').datetimepicker({
                dateFormat: "yy-mm-dd", timeFormat: "hh:mm tt", minDate: new Date()
            });
            $('#fecha_fin').datetimepicker({
                dateFormat: "yy-mm-dd", timeFormat: "hh:mm tt", minDate: new Date()
            });
            $('#fecha_inicio_reg_candidato').datetimepicker({
                dateFormat: "yy-mm-dd", timeFormat: "hh:mm tt", minDate: new Date()
            });
            $('#fecha_fin_reg_candidato').datetimepicker({
                dateFormat: "yy-mm-dd", timeFormat: "hh:mm tt", minDate: new Date()
            });
        });
    </script>
}

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Modificar eleccion";

    var titulo = string.Empty;
    var descripcion = string.Empty;
    var fecha_inicio = string.Empty;
    var fecha_fin = string.Empty;
    var fecha_inicio_reg_candidato = string.Empty;
    var fecha_fin_reg_candidato = string.Empty;
    var Cbo_empresa = string.Empty;

    Validation.Add("titulo", Validator.StringLength(maxLength: 80, errorMessage: "El texto supera el maximo permitido de 80 caracteres."));
    Validation.Add("descripcion", Validator.StringLength(maxLength: 200, errorMessage: "El texto supera el maximo permitido de 200 caracteres."));

    // Implementacion de seguridad
    WebSecurity.RequireAuthenticatedUser();

    if (!string.IsNullOrEmpty(Request.QueryString["id"]))
    {
        Session["idEleccion"] = Request.QueryString["id"];
    }
    else
    {
        Response.Redirect("listarElecciones.cshtml");
    }


    if (IsPost)
    {
        titulo = Request.Form["titulo"];
        descripcion = Request.Form["descripcion"];
        fecha_inicio = Request.Form["fecha_inicio"];
        fecha_fin = Request.Form["fecha_fin"];
        fecha_inicio_reg_candidato = Request.Form["fecha_inicio_reg_candidato"];
        fecha_fin_reg_candidato = Request.Form["fecha_fin_reg_candidato"];
        Cbo_empresa = Request.Form["Cbo_empresa"];

        if (string.IsNullOrEmpty(titulo))
        {
            ModelState.AddError("titulo", "El campo titulo no debe estar vacio.");
        }

        if (string.IsNullOrEmpty(descripcion))
        {
            ModelState.AddError("descripcion", "El campo descripcion no debe estar vacio.");
        }

        if (string.IsNullOrEmpty(fecha_inicio))
        {
            ModelState.AddError("Fecha_inicio", "El campo fecha inicio no debe estar vacio.");
        }

        if (string.IsNullOrEmpty(fecha_fin))
        {
            ModelState.AddError("fecha_fin", "El campo fecha fin no debe estar vacio.");
        }

        if (string.IsNullOrEmpty(fecha_inicio_reg_candidato))
        {
            ModelState.AddError("fecha_inicio_reg_candidato", "El campo no debe estar vacio.");
        }

        if (string.IsNullOrEmpty(fecha_fin_reg_candidato))
        {
            ModelState.AddError("fecha_fin_reg_candidato", "El campo no debe estar vacio.");
        }

        if (string.IsNullOrEmpty(Cbo_empresa))
        {
            ModelState.AddError("Cbo_empresa", "Debe seleccionar una empresa.");
        }


        if (ModelState.IsValid)
        {
            ServicioGenerico<eleccion> servicio = new ServicioGenerico<eleccion>();

            servicio.entidad.id_eleccion = int.Parse(Session["idEleccion"].ToString());
            servicio.entidad.titulo = titulo;
            servicio.entidad.descripcion = descripcion;
            servicio.entidad.fecha_inicio = Convert.ToDateTime(fecha_inicio);
            servicio.entidad.fecha_fin = Convert.ToDateTime(fecha_fin);
            servicio.entidad.Fecha_inicio_reg_candidato = Convert.ToDateTime(fecha_inicio_reg_candidato);
            servicio.entidad.Fecha_fin_reg_candidato = Convert.ToDateTime(fecha_fin_reg_candidato);
            servicio.entidad.id_empresa = int.Parse(Session["id_Empresa"].ToString());

            servicio.entidad.estado = true;

            EstadoTransaccion resultado = servicio.actualizar();

            if (EstadoTransaccion.ERRONEO.Equals(resultado))
            {
                ModelState.AddError("errorGeneral", servicio.mensaje);
            }
            else
            {
                ModelState.AddError("errorGeneral", servicio.mensaje);
                Response.Redirect("listarElecciones.cshtml");
            }
        }
    }
    else
    {
        ServicioGenerico<eleccion> servicioListar = new ServicioGenerico<eleccion>();        
        servicioListar.entidad.id_eleccion = int.Parse(Session["idEleccion"].ToString());
        servicioListar.entidad.estado = true;

        eleccion objEleccion = new eleccion();
        objEleccion = servicioListar.filtrar().FirstOrDefault();

        titulo = objEleccion.titulo;
        descripcion = objEleccion.descripcion;
        fecha_inicio = objEleccion.fecha_inicio.ToString();
        fecha_fin = objEleccion.fecha_fin.ToString();
        fecha_inicio_reg_candidato = objEleccion.Fecha_inicio_reg_candidato.ToString();
        fecha_fin_reg_candidato = objEleccion.Fecha_fin_reg_candidato.ToString();
        Cbo_empresa = objEleccion.id_empresa.ToString();
    }    
}

@if (!User.IsInRole("Admin"))
{
    ModelState.AddError("errorGeneral", "El usuario: " + User.Identity.Name + " NO tiene permisos sobre este formulario.");
    @Html.ValidationMessage("errorGeneral")
}
else
{    
    <form method="post">
        @AntiForgery.GetHtml()
        <fieldset>
            <legend>Formulario de registro</legend>
            <ol>
                <li class="email">
                    <label for="titulo" @if (!ModelState.IsValidField("titulo"))
                                        {<text>class="error-label"</text>}>
                        Titulo</label>
                    <input type="text"  id="titulo" name="titulo" value="@titulo" @Validation.For("titulo")/>
                    @Html.ValidationMessage("titulo")
                </li>
                <li class="email">
                    <label for="descripcion" @if (!ModelState.IsValidField("descripcion"))
                                             {<text>class="error-label"</text>}>
                        Descripcion</label>
                    <textarea id="descripcion" name="descripcion" style="width:300px;height:50px;" @Validation.For("descripcion")>@descripcion</textarea>
                    @Html.ValidationMessage("descripcion")
                </li>
                <li class="email">
                    <label for="fecha_inicio" @if (!ModelState.IsValidField("fecha_inicio"))
                                              {<text>class="error-label"</text>}>
                        Fecha inicio</label>
                    <input type="text" id="fecha_inicio" name="fecha_inicio" value="@fecha_inicio"  @Validation.For("fecha_inicio")/>
                    @Html.ValidationMessage("fecha_inicio")
                </li>
                <li class="email">
                    <label for="fecha_fin" @if (!ModelState.IsValidField("fecha_fin"))
                                           {<text>class="error-label"</text>}>
                        Fecha fin</label>
                    <input type="text" id="fecha_fin" name="fecha_fin" value="@fecha_fin"  @Validation.For("fecha_fin")/>
                    @Html.ValidationMessage("fecha_fin")
                </li>
                <li>
                    <label for="Cbo_empresa" @if (!ModelState.IsValidField("Cbo_empresa"))
                                             {<text>class="error-label"</text>}>
                        Empresa
                    </label>
                    <select id="Cbo_empresa" name="Cbo_empresa" @Validation.For("Cbo_empresa")>
                        @{ 
                            ServicioGenerico<empresa> servicioListarEmpresa = new ServicioGenerico<empresa>();
                            servicioListarEmpresa.entidad.estado = true;

                            List<empresa> lstEmpresa = new List<empresa>();
                            lstEmpresa = servicioListarEmpresa.filtrar();

                            foreach (var elementEmpresa in lstEmpresa)
                            {
                                if (elementEmpresa.id_empresa.Equals(int.Parse(Cbo_empresa)))
                                {
                                    @:<option value="@elementEmpresa.id_empresa" selected="selected"> @elementEmpresa.nombre </option>
                                }
                                else
                                {
                                    @:<option value="@elementEmpresa.id_empresa"> @elementEmpresa.nombre </option>
                                }
                            }
                        }
                    </select>
                    <br />
                    @Html.ValidationMessage("Cbo_empresa")



                </li>
                <li class="email">
                    <br />
                    <label>Fechas para inscripcion de candidatos.</label>
                    <hr />
                    <br />

                    <label for="fecha_inicio_reg_candidato" @if (!ModelState.IsValidField("fecha_inicio_reg_candidato"))
                                                            {<text>class="error-label"</text>}>
                        Fecha inicio</label>
                    <input type="text" id="fecha_inicio_reg_candidato" name="fecha_inicio_reg_candidato" value="@fecha_inicio_reg_candidato"  @Validation.For("fecha_inicio_reg_candidato")/>
                    @Html.ValidationMessage("fecha_inicio_reg_candidato")
                </li>
                <li class="email">
                    <label for="fecha_fin_reg_candidato" @if (!ModelState.IsValidField("fecha_fin_reg_candidato"))
                                                         {<text>class="error-label"</text>}>
                        Fecha fin</label>
                    <input type="text" id="fecha_fin_reg_candidato" name="fecha_fin_reg_candidato" value="@fecha_fin_reg_candidato"  @Validation.For("fecha_fin_reg_candidato")/>
                    @Html.ValidationMessage("fecha_fin_reg_candidato")
                </li>
            </ol>
            <input type="submit" value="Actualizar" />
        </fieldset>
    </form>
}
